﻿using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Admin_Components_MasterData_Banner : System.Web.UI.UserControl
{
    DBDataContext db;
    DatabaseHelper helper;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataBind();
        }
    }
    private void DataBind()
    {
        DataTable dt = loadData();
        gvData.DataSource = dt;
        gvData.DataBind();
    }
    private DataTable loadData(int iID = 0)
    {
        DataTable dt = new DataTable();
        try
        {
            db = new DBDataContext();
            var list1 = (from a in db.Banners
                         where a.Status == 'A' && (a.ID == iID || iID == 0)
                         orderby a.SortOrder descending
                         select new
                         {
                             BannerID = a.ID,
                             Title = a.Tooltip,
                             ImagePath = a.ImagePath,
                             SortOrder = a.SortOrder,
                             LastUpdatedBy = a.LastUpdatedBy,
                             LastUpdatedDateTime = string.Format("{0:dd/MM/yyyy}", a.LastUpdatedDateTime)
                         });
            //Xu ly RowID
            var list = list1.AsEnumerable().Select((b, index) => new
            {
                BannerID = b.BannerID,
                Title = b.Title,
                ImagePath = Utils.getUrlImage() + b.ImagePath,
                SortOrder = b.SortOrder,
                LastUpdatedBy = b.LastUpdatedBy,
                LastUpdatedDateTime = string.Format("{0:dd/MM/yyyy}", b.LastUpdatedDateTime),
                RowID = index + 1
            }).ToList();
            dt = list.ToDataTable();
            if (dt.Rows.Count > 0)
                div_TotalRows.InnerText = "Kết quả tìm kiếm: " + String.Format("{0:N0}", dt.Rows.Count);

            else
                div_TotalRows.InnerText = "Kết quả tìm kiếm: 0";
        }

        catch (Exception ex)
        {
            ControlUtil.LogError("Location Page-loadData:" + ex.Message.ToString());
            return null;
        }
        return dt;
    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        try
        {
            if (Session["Username"] != null)
            {
                string strImagePath = string.Empty;
                //Luu hinh vao Disk
                if (fuImagePath.HasFile)
                {
                    FileInfo f = new FileInfo(fuImagePath.FileName);
                    if (f != null && (f.Extension.ToLower() != ".gif" && f.Extension.ToLower() != ".jpg" && f.Extension.ToLower() != ".jpeg" && f.Extension.ToLower() != ".png"  && f.Extension.ToLower() != ".swf"))
                    {
                        JavascriptUtil.LoadMessage(UpdatePanel1, false, "Chỉ được upload file dạng .gif, .jpg, .jpeg, .png, .swf");
                        return;
                    }
                    if (f != null && fuImagePath.FileBytes.Length > (512 * 1024))
                    {
                        JavascriptUtil.LoadMessage(UpdatePanel1, false, "Dung lượng hình ảnh không quá 500kb");
                        return;
                    }
                    //Delete file cu
                    if (!string.IsNullOrEmpty(hidOldImagePath.Value))
                        Utils.DeleteFileFromServer(hidOldImagePath.Value);

                    string strPath = "/Upload/Banner/";
                    strImagePath = strPath + Path.GetFileName(fuImagePath.FileName);
                    Utils.UploadFileToFTP(fuImagePath, strPath);
                }
                else
                {
                    if (!string.IsNullOrEmpty(hidOldImagePath.Value))
                        strImagePath = hidOldImagePath.Value;
                    else {
                        JavascriptUtil.LoadMessage(UpdatePanel1, false, "Vui chọn hình ảnh");
                        return;
                    }
                }
                db = new DBDataContext();
                if (ViewState["BannerID"] == null)
                {
                    Banner obj = new Banner();
                    obj.Tooltip = Utils.KillChars(txtTitle.Text.Trim());
                    obj.ImagePath = strImagePath;
                    obj.SortOrder = Convert.ToInt32(Utils.KillChars(txtSortOrder.Text.Trim() == "" ? "0" : txtSortOrder.Text.Trim()));
                    obj.CreatedBy = Session["Username"].ToString();
                    obj.CreatedDateTime = DateTime.Now;
                    obj.LastUpdatedBy = Session["Username"].ToString();
                    obj.LastUpdatedDateTime = DateTime.Now;
                    obj.Status = 'A';
                    db.Insert<Banner>(obj);
                    db.SubmitChanges();
                    ViewState["BannerID"] = obj.ID;
                }
                else {
                    Banner obj = db.Banners.FirstOrDefault(x => x.ID == Convert.ToInt32(ViewState["BannerID"]));
                    obj.Tooltip = Utils.KillChars(txtTitle.Text.Trim());
                    obj.ImagePath = strImagePath;
                    obj.SortOrder = Convert.ToInt32(Utils.KillChars(txtSortOrder.Text.Trim() == "" ? "0" : txtSortOrder.Text.Trim()));
                    obj.LastUpdatedBy = Session["Username"].ToString();
                    obj.LastUpdatedDateTime = DateTime.Now;
                    db.SubmitChanges();
                }
                JavascriptUtil.LoadMessage(UpdatePanel1, true, "Lưu thành công!");
                DataBind();
                //End luu hinh vao Disk
            }
        }
        catch (Exception ex)
        {
            JavascriptUtil.LoadMessage(UpdatePanel1, false, "Thông báo lỗi: Lưu không thành công, vui lòng kiểm tra dữ liệu!");
            ControlUtil.LogError("Banner Page-btnSave_Click:" + ex.Message);
        }
    }
    //protected void btnCancel_Click(object sender, EventArgs e)
    //{
    //    try
    //    {
    //        if (ViewState["BannerID"] != null)
    //        {
    //            db = new DBDataContext();
    //            Banner obj = db.Banners.FirstOrDefault(x => x.ID == Convert.ToInt32(ViewState["BannerID"]));
    //            obj.LastUpdatedBy = Session["Username"].ToString();
    //            obj.LastUpdatedDateTime = DateTime.Now;
    //            obj.Status = 'I';
    //            db.SubmitChanges();
    //            if (!string.IsNullOrEmpty(hidOldImagePath.Value))
    //                Utils.DeleteFileFromServer(hidOldImagePath.Value);
    //            btnCancel.Enabled = false;
    //            btnSave.Enabled = false;
    //            JavascriptUtil.LoadMessage(UpdatePanel1, true, "Xóa thành công!");
    //        }
    //    }
    //    catch (Exception ex)
    //    {
    //        ControlUtil.LogError("Location Page-btnCancel_Click:" + ex.Message.ToString());
    //        JavascriptUtil.LoadMessage(UpdatePanel1, false, "Thông báo lỗi: Xóa không thành công. Vui lòng kiểm tra dữ liệu và thực hiện lại!");
    //    }
    //}
    protected void btnNew_Click(object sender, EventArgs e)
    {
        Response.Redirect("/Banner", false);
    }
    protected void gvData_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
    {
        try
        {
            if (Session["Username"] != null)
            {
                string commandName = e.CommandName;
                int ID = Convert.ToInt32(e.CommandArgument.ToString());//Lay ID 
                helper = new DatabaseHelper();

                //if (commandName == "EditItem")
                //{
                //    try
                //    {
                //        DataTable dt = loadData(ID);
                //        if (dt.Rows.Count > 0)
                //        {
                //            txtTitle.Text = dt.Rows[0]["Title"].ToString();
                //            txtSortOrder.Text = String.Format("{0:N0}", dt.Rows[0]["SortOrder"]);
                //            hidOldImagePath.Value = dt.Rows[0]["ImagePath"].ToString();
                //            txtLastUpdatedBy.Text = dt.Rows[0]["LastUpdatedBy"].ToString();
                //            txtLastUpdatedDateTime.Text = dt.Rows[0]["LastUpdatedDateTime"].ToString();
                //            ViewState["BannerID"] = dt.Rows[0]["BannerID"].ToString();
                //            btnSave.Enabled = true;
                //        }

                //    }
                //    catch (Exception ex)
                //    {
                //        ControlUtil.LogError("Banner Page-gvData_ItemCommand-EditItem:" + ex.Message);
                //    }
                //}
                if (commandName == "DeleteItem")
                {
                    try
                    {
                        db = new DBDataContext();
                        Banner obj = db.Banners.FirstOrDefault(x => x.ID == Convert.ToInt32(ID));
                        obj.LastUpdatedBy = Session["Username"].ToString();
                        obj.LastUpdatedDateTime = DateTime.Now;
                        obj.Status = 'I';
                        db.SubmitChanges();
                        if (!string.IsNullOrEmpty(obj.ImagePath))
                            Utils.DeleteFileFromServer(obj.ImagePath);
                        
                        JavascriptUtil.LoadMessage(UpdatePanel1, true, "Xóa thành công!");
                        DataBind();
                    }
                    catch (Exception ex)
                    {
                        ControlUtil.LogError("Banner Page-gvData_ItemCommand-DeleteItem:" + ex.Message);
                        JavascriptUtil.LoadMessage(UpdatePanel1, false, "Thông báo lỗi: Xóa không thành công!");
                    }
                }
            }
        }
        catch (Exception ex)
        {
            ControlUtil.LogError("Banner Page-gvData_ItemCommand:" + ex.Message);
        }
    }
    protected void gvData_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        try
        {

            //Ham phan trang: Paging
            DataBind();
        }
        catch (Exception ex)
        {
            ControlUtil.LogError("Banner Page-gvData_NeedDataSource:" + ex.Message);
        }
    }
}